
class EnderecoController {

    String controlador;

    def index = { }

    //closure que grava o endereço
    def save   = {
        if(!verificaLogon()){
            return;
        }
        controlador = params.tipo;

        //carrega os atributos de formacao e recebe os dados
        def enderecoInstance = new Endereco(params);
        //grava os dados, seta a sessão usuário e redireciona para a tela de edição de cadastro
        if (enderecoInstance.save(flush: true)) {
            flash.message = "Endereço cadastrado com sucesso.";
            redirect(controller: controlador, action: "edit", id:params.pessoa.id);
        }else {
            flash.message = "Não foi possível cadastrar o endereco.";
            redirect(controller: controlador, action: "edit", id:params.pessoa.id, model: [enderecoInstance: enderecoInstance]);
        }
    };

    //closure que grava o endereço
    def update   = {
        if(!verificaLogon()){
            return;
        }
        controlador = params.tipo;

        //carrega os atributos de formacao e recebe os dados
        def enderecoInstance = Endereco.get(params.id);
        enderecoInstance.properties = params;
        //grava os dados, seta a sessão usuário e redireciona para a tela de edição de cadastro
        if (enderecoInstance.save(flush: true)) {
            flash.message = "Endereço alterado com sucesso.";
            redirect(controller: controlador, action: "edit", id:params.pessoa.id);
        }else {
            flash.message = "Não foi possível alterar o endereco.";
            redirect(controller: controlador, action: "edit", id:params.pessoa.id, model: [enderecoInstance: enderecoInstance]);
        }
    };


    //closure que carrega a tela de edição de cadastro
    def edit   = {
        if(!verificaLogon()){
            return;
        }
        controlador = params.tipo;
        def enderecoInstance     = Endereco.findById(params.id);
        // Se existe retorna os dados.
        if (enderecoInstance){
            redirect(controller: controlador, action: "edit", id:params.pessoa.id, params:[endereco: enderecoInstance]);
        }else {
            flash.message = "Endereço não encontrado.";
            redirect(controller: controlador, action: "edit", id:params.pessoa.id);
        }
    };



    //closure que exclui os registros
    def delete = {
        if(!verificaLogon()){
            return;
        }
        controlador = params.tipo;
        // Carrega os dados.
        def EnderecoInstance = Endereco.findById(params.id)
        // Exclui o registro.
        def pessoaInstance = Pessoa.findById(EnderecoInstance.pessoa.id)

        EnderecoInstance.delete();
        flash.message = "Endereco excluido com sucesso.";
        redirect(controller: controlador, action: "edit", id:pessoaInstance.id);
    };


    /*
     * Método que verifica se o usuário está logado.
     * Se não estiver logado é redirecionado para home
     */
    private boolean verificaLogon() {
        if(!session["pessoa"]){
            flash.message = "Você precisa estar logado para acessar esta página.";
            redirect(controller:'login', action:'auth');
            return false;
        }

        return true;
    }

}
